package com.atguigu.jxc.service.impl;

import com.atguigu.jxc.dao.GoodsTypeDao;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.service.GoodsTypeService;
import com.atguigu.jxc.vo.Attributes;
import com.atguigu.jxc.vo.Children;
import com.atguigu.jxc.vo.GoodsTypeVo;
import com.atguigu.jxc.vo.SaveGoodsTypeVo;
import com.fasterxml.jackson.databind.util.JSONPObject;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Author ONIE
 * @create 2021/11/25 7:07 下午
 */
@Service
public class GoodsTypeServiceImpl implements GoodsTypeService {
	@Autowired
	private GoodsTypeDao goodsTypeDao;

	@Override
	public String loadGoodsType() {
		List<GoodsType> goodsTypes1 = goodsTypeDao.seleryByPId1();
		List<GoodsTypeVo> collect = goodsTypes1.stream().map(goodsType -> {
			GoodsTypeVo goodsTypeVo = new GoodsTypeVo();
			goodsTypeVo.setId(goodsType.getGoodsTypeId());
			goodsTypeVo.setText(goodsType.getGoodsTypeName());
			goodsTypeVo.setState(goodsType.getGoodsTypeState() != 0 ? "closed" : "open");
			goodsTypeVo.setIconCls("goods-type");
			Attributes attributes = new Attributes();
			goodsTypeVo.setAttributes(attributes);
			attributes.setState(goodsType.getGoodsTypeState());
			List<GoodsTypeVo> goodsTypeVoList2 = new ArrayList<>();
			List<GoodsType> goodsTypes2 = goodsTypeDao.selectByTypeId(goodsType.getGoodsTypeId());
			for (GoodsType type : goodsTypes2) {
				GoodsTypeVo goodsTypeVo2 = new GoodsTypeVo();
				goodsTypeVo2.setId(type.getGoodsTypeId());
				goodsTypeVo2.setText(type.getGoodsTypeName());
				goodsTypeVo2.setState(goodsType.getGoodsTypeState() != 0 ? "closed" : "open");
				goodsTypeVo2.setIconCls("goods-type");
				Attributes attributes1 = new Attributes();
				attributes1.setState(type.getGoodsTypeState());
				goodsTypeVo2.setAttributes(attributes1);
				List<GoodsType> goodsTypes3 = goodsTypeDao.selectByTypeId(type.getGoodsTypeId());
				List<GoodsTypeVo> goodsTypeVoList3 = new ArrayList<>();
				for (GoodsType goodsType3 : goodsTypes3) {
					GoodsTypeVo goodsTypeVo3 = new GoodsTypeVo();

					goodsTypeVo3.setId(goodsType3.getGoodsTypeId());
					goodsTypeVo3.setText(goodsType3.getGoodsTypeName());
					goodsTypeVo3.setState(goodsType3.getGoodsTypeState() != 0 ? "closed" : "open");
					goodsTypeVo3.setIconCls("goods-type");
					Attributes attributes3 = new Attributes();
					attributes1.setState(goodsType3.getGoodsTypeState());
					goodsTypeVo3.setAttributes(attributes3);

					goodsTypeVoList3.add(goodsTypeVo3);
				}
				goodsTypeVo2.setChildren(goodsTypeVoList3);
				goodsTypeVoList2.add(goodsTypeVo2);
			}
			goodsTypeVo.setChildren(goodsTypeVoList2);
			return goodsTypeVo;
		}).collect(Collectors.toList());
		Gson gson = new Gson();
		String s = gson.toJson(collect);
		System.out.println(s);
		return s;
	}

	@Override
	public void saveGoodsType(SaveGoodsTypeVo saveGoodsTypeVo) {
		Integer pId = saveGoodsTypeVo.getPId();
		if (pId<2)  saveGoodsTypeVo.setGoodsTypeState(1);
		else saveGoodsTypeVo.setGoodsTypeState(0);;

		goodsTypeDao.saveGoodsType(saveGoodsTypeVo);
	}

	@Override
	public void deleteGoodsTypeById(Integer goodsTypeId) {
		goodsTypeDao.deleteGoodsTypeById(goodsTypeId);
	}
}
